"""
inet.log 日志文件
编写一个程序,输入一个端口名称,得到这个
端口运行情况描述中的 address is 地址信息 (四位十六进制数,三组两点分隔 [0-9A-F]+.?){3} )

注意:端口名称是每段首个单词,每段之间有空行
"""
import re

# -----------------------version 0.1------------------------

# 获取端口
port = input("输入端口名称:")

# 循环获取每段内容, 比对首单词
file = open("inet.log", "r")
while True:
    data = ""
    for line in file:
        if line == "\n":
            break
        data += line
    if not data:
        print("没有对应端口信息")
        break

    head = re.match("\S+", data).group()  # 从开头,一直匹配到空格的前一个字符(\S 匹配所有非空字符)
    if head == port:
        address = re.search("([0-9A-F]+.?){3}", data).group()
        print(address)
        break


# -----------------------version 0.2 (拆)------------------------
# 段落生成器 负责文件读取
# 入口函数 负责正则表达式匹配

# 生成器函数: 生成每段内容
def pargram():
    file = open("inet.log", "r")
    while True:
        data = ""
        for line in file:
            if line == "\n":
                break
            data += line
        if data:
            yield data  # 对外提供一段内容
        else:
            print("没有对应端口信息")
            return


def main():
    # 获取端口
    port = input("输入端口名称:")

    for parg in pargram():
        head = re.match("\S+", parg).group()  # 从开头,一直匹配到空格的前一个字符(\S 匹配所有非空字符)
        if head == port:
            address = re.search("([0-9A-F]+.?){3}", parg).group()
            return address
    return "Not Found"


if __name__ == '__main__':
    print(main())
